//
// Created by hjie on 23-9-3.
//

#pragma once

#include "base_protocol.h"
#include <rapidjson/document.h>
#include <set>
#include <memory>
#include <map>
#include <vector>

class UserInProtocol : public BaseProtocol
{
public:
    UserInProtocol();
    virtual void Dump(rapidjson::Document & output) override;
    virtual bool ParseData(rapidjson::Document &input) override;
private:

};

class UserInResponseProtocol : public BaseProtocol
{
public:
    UserInResponseProtocol();
    virtual void Dump(rapidjson::Document & output) override;
    virtual bool ParseData(rapidjson::Document & input) override {  return true; }
public:
    std::set<std::string> m_user_set;
};

class UserInBroadcastResponseProtocol : public BaseProtocol
{
public:
    UserInBroadcastResponseProtocol();
    virtual void Dump(rapidjson::Document & output) override;
    virtual bool ParseData(rapidjson::Document & input) override {  return true;    }
public:
    std::string m_user_id;
};

class UserOutProtocol : public BaseProtocol
{
public:
    UserOutProtocol();
    bool ParseData(rapidjson::Document &input) override;
private:

};

class UserOutResponseProtocol : public BaseProtocol
{
public:
    UserOutResponseProtocol() {}
    void Dump(rapidjson::Document & output) override;
public:
    std::string m_left_user_id;
};


